#include <rtthread.h>
#include <rtdbg.h>
#include <rtdevice.h>
#include <board.h>
#include "main.h"
#include "rt_thread_demo.h"
#include "../hardware/LED/led.h"

// 标志位，1表示亮，0表示灭
uint8_t LED1_flag = 0;
uint8_t LED2_flag = 0;

/****************************** LED_Init BEGIN *********************************
 * 函    数：LED_Init
 * 功    能：初始化LED1, LED2为推挽输出并默认关闭
 * 参    数：无
 * 返 回 值：无
 * 注意事项：配置led.h中的LED1的宏定义选择引脚  ！高电平点亮！
 ******************************************************************************/
void LED_Init()
{
    rt_pin_mode(LED1, PIN_MODE_OUTPUT);  // 设置推挽输出
    rt_pin_write(LED1, PIN_LOW);         // 默认低电平关闭
    rt_pin_mode(LED2, PIN_MODE_OUTPUT);  // 设置推挽输出
    rt_pin_write(LED2, PIN_LOW);         // 默认低电平关闭
}
/****************************** LED_Init END ***********************************/

/****************************** LED1_Init BEGIN ********************************
 * 函    数：LED1_Init
 * 功    能：初始化LED1为推挽输出并默认关闭
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED1_Init()
{
    rt_pin_mode(LED1, PIN_MODE_OUTPUT);  // 设置推挽输出
    rt_pin_write(LED1, PIN_LOW);         // 默认低电平关闭
}
/****************************** LED1_Init END **********************************/

/****************************** LED2_Init BEGIN ********************************
 * 函    数：LED2_Init
 * 功    能：初始化LED2为推挽输出并默认关闭
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED2_Init()
{
    rt_pin_mode(LED2, PIN_MODE_OUTPUT);  // 设置推挽输出
    rt_pin_write(LED2, PIN_LOW);         // 默认低电平关闭
}
/****************************** LED2_Init END **********************************/

/****************************** Update_LED BEGIN *******************************
 * 函    数：Update_LED
 * 功    能：根据标志位控制LED1, LED2亮灭
 * 参    数：无
 * 返 回 值：无
 * 注意事项：无
 ******************************************************************************/
void Update_LED()
{
    if (LED1_flag) LED1_ON();
    else LED1_OFF();
    if (LED2_flag) LED2_ON();
    else LED2_OFF();
}
/****************************** Update_LED END *********************************/

/****************************** LED1_ON BEGIN **********************************
 * 函    数：LED1_ON
 * 功    能：点亮LED1
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED1_ON()
{
    rt_pin_write(LED1, PIN_HIGH);
}
/****************************** LED1_ON END ************************************/

/****************************** LED1_OFF BEGIN *********************************
 * 函    数：LED1_OFF
 * 功    能：关闭LED1
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED1_OFF()
{
    rt_pin_write(LED1, PIN_LOW);
}
/****************************** LED1_OFF END ***********************************/

/****************************** LED1_TURN BEGIN ********************************
 * 函    数：LED1_TURN
 * 功    能：翻转LED1状态
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED1_TURN()
{
    rt_pin_write(LED1, ((rt_pin_read(LED1) == PIN_LOW) ? PIN_HIGH : PIN_LOW));
}
/****************************** LED1_TURN END **********************************/

/****************************** LED2_ON BEGIN **********************************
 * 函    数：LED2_ON
 * 功    能：点亮LED2
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED2_ON()
{
    rt_pin_write(LED2, PIN_HIGH);
}
/****************************** LED2_ON END ************************************/

/****************************** LED2_OFF BEGIN *********************************
 * 函    数：LED2_OFF
 * 功    能：关闭LED2
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED2_OFF()
{
    rt_pin_write(LED2, PIN_LOW);
}
/****************************** LED2_OFF END ***********************************/

/****************************** LED2_TURN BEGIN ********************************
 * 函    数：LED2_TURN
 * 功    能：翻转LED2状态
 * 参    数：无
 * 返 回 值：无
 ******************************************************************************/
void LED2_TURN()
{
    rt_pin_write(LED2, ((rt_pin_read(LED2) == PIN_LOW) ? PIN_HIGH : PIN_LOW));
}
/****************************** LED2_TURN END **********************************/



